1. Field of the Invention
The invention relates to scheduling of asynchronous and isochronous transactions on a shared bus, and more particularly to giving priority to asynchronous transactions to the extent that isochronous transaction latency does not exceed a desired time.
2. Description of the Related Art
Many computer systems utilize a shared bus that carries multiple types of traffic. For example, some shared buses carry both asynchronous and isochronous traffic. A Peripheral Component Interconnect (PCI) bus is an example of a shared bus that has been used to carry both asynchronous and isochronous traffic. While asynchronous traffic can be delayed indefinitely without adversely affecting real-time data streams, computer system performance can be adversely affected when the asynchronous traffic is delayed. Further, since isochronous traffic is time dependent, it requires a certain bandwidth and worst case latency. A multimedia stream (video and audio signal) is an example of isochronous traffic. Multimedia streams utilize an isochronous transport mechanism to ensure that data is delivered at least as fast as it needs to be displayed. Further, isochronous transport mechanisms have been utilized to ensure an audio signal is synchronized with a video signal. Provided bandwidth and latency requirements for isochronous traffic are met, latency of the isochronous traffic has not had an adverse effect on real-time performance.
A number of techniques have been employed to ensure that isochronous traffic had access to a shared bus for a given amount of time within a given frame. These methods have included static allocation of bandwidth and timer/counter based mechanisms which attempted to detect when isochronous transactions were complete. These prior methods have normally guaranteed isochronous latency at the expense of asynchronous latency. That is to say, the isochronous bus requests were fulfilled without consideration of the asynchronous bus requests. As a general rule, this resulted in increased latency for the asynchronous requests. In addition, trying to predict isochronous transaction requirements based on time averages has normally complicated system design.
A system according to the present invention implements a technique for scheduling asynchronous and isochronous transactions on a shared bus that reduces asynchronous latency while keeping isochronous latency below an acceptable level. This is accomplished by splitting an allocated shared bus time into frames of equal length. When a bus request is received the technique determines whether the bus request in a current frame is for an asynchronous transaction or an isochronous transaction. If an asynchronous bus request exists it is processed, otherwise an isochronous bus request is processed. Bus requests for an isochronous transaction are queued if received while an asynchronous transaction is currently being processed. Asynchronous transactions are given priority until a current frame time has ended.
In one embodiment, at the start of a new frame any queued isochronous transaction requests are processed before asynchronous transaction requests of the current frame are given priority. In another embodiment, queued isochronous transaction requests are only processed at the start of the new frame if they are from two frames prior to the new frame. An advantage of the present technique is that it can be implemented using a few latches and a few relatively simple logic gates. Another advantage of the present technique is that scheduling of isochronous transactions are based on isochronous source requests.